Incomplete turn detection
The STT engine sends the AI Agent a final speech recognition every time the user pauses long enough – but a pause is not the same as a finished thought. Callers say "my number is five five five…", "I need help with…" or "hmm, let me think", and by default the AI Agent answers each of these as if the user were done, talking over someone who was still mid-sentence.
Incomplete turn detection lets the Large Language Model itself decide. The AI Agent adds an instructions block to the prompt asking the model to begin every response with one of three marker characters – complete, cut off mid-sentence, or thinking. When the model reports that the turn is incomplete, the AI Agent stays silent and gives the user time to continue; if they never do, it re-engages them with a short prompt.
The markers are stripped before anything reaches the user, so they never appear in the spoken response, the conversation transcript, webhooks or post-call analysis.
Enable it by adding the incomplete_turn parameter to the Agent's or Flow's advanced configuration screen:
{
"incomplete_turn": {
"mode": "enabled"
}
}
Where it applies:
- Agents – on any regular (textual) model.
- Flows – on conversation nodes, judged by that node's own model. Tool and API nodes are unaffected.
- Speech-to-speech (realtime) models – not supported. These models detect the end of a turn themselves; use their own settings (Endpointing sensitivity,
gemini_audio.vad_mode) instead.
In addition to mode you may customize the behavior with the parameters below.
| Parameter | Type | Description |
|---|---|---|
incomplete_turn
|
IncompleteTurn | Let the model suppress its response when the user has not finished speaking. |
IncompleteTurn
| Parameter | Type | Description |
|---|---|---|
mode
|
enum | Incomplete turn detection mode. Supported values: • disabled – incomplete turn detection is off (default)• enabled – the model judges whether the user finished speaking |
short_timeout
|
int | Time (in milliseconds) to wait after the user was cut off mid-sentence before re-engaging them. Default = 5000 msec, minimum 500, maximum 60000 |
long_timeout
|
int | Time (in milliseconds) to wait after the user asked for time to think before re-engaging them. Default = 10000 msec, minimum 500, maximum 60000 |
short_prompt
|
string | How the model should re-engage a user who was cut off mid-sentence. Default = "Say something brief and natural that invites them to finish…" |
long_prompt
|
string | How the model should re-engage a user who asked for time to think. Default = "Check in warmly without pressing them…" |
instructions
|
string | Replaces the entire instructions block added to the prompt. Reserved for AudioCodes support – see the note below. |
logs
|
bool | Write an incomplete_turn entry to the conversation log whenever a turn is judged incomplete.Default = true |
The instructions parameter replaces the whole block that the AI Agent adds to your prompt, including the marker characters the feature is built on. It is intended for AudioCodes support engineers fine-tuning the feature's behavior; use it only if explicitly asked to do so as part of problem troubleshooting. To change how the AI Agent re-engages a silent caller, use short_prompt and long_prompt, which do not touch the markers.
Replacement text that does not mention all three marker characters is rejected: the AI Agent keeps the default instructions and writes a warning to the conversation log, rather than running with instructions the feature cannot act on.
How a held turn plays out
- The user says "my number is five five five" and pauses. The STT sends the utterance.
- The model judges it incomplete, so the AI Agent plays nothing at all.
- The user continues: "one two three four". The model now has the whole number in its context and answers once.
If the user never continues, the AI Agent waits short_timeout (or long_timeout, when the user asked for time to think) and then has the model produce a short prompt – "go ahead, I'm listening" – so the call never stalls in silence. It re-engages at most once per pause; after the user speaks again, the next pause gets its own re-engagement.
Interaction with other settings
- Progress messages – a progress message is suppressed once a turn is judged incomplete, since reassuring the user would break the silence. The judgement only arrives with the model's first token, so set Progress message timeout (
progress_timeout, default 2000 msec) comfortably above your model's typical response time; otherwise a progress message can still slip out before the AI Agent knows the turn was incomplete. - No user input – the Bot connection's own no-input timeout keeps running while a turn is held. If it expires first, the resulting
NO-USER-INPUTutterance ends the held turn and is handled normally. - Maximum number of turns – a held turn is a real LLM round-trip and counts towards the Agent's Max turns, so a long call with many held turns reaches the limit sooner.
- Active listening – the two features work together. Active listening pre-generates a response while the user speaks; if that response reports an incomplete turn, it is suppressed like any other.
Monitoring incomplete turn detection
Whenever a turn is judged incomplete, the AI Agent records an incomplete_turn entry in the conversation log reporting which verdict the model gave and how long the AI Agent will wait before re-engaging. Set logs to false to suppress these entries.
If the model does not begin its response with a marker at all – most likely a smaller or older model that cannot follow the format reliably – the AI Agent logs a warning and delivers the response normally. The feature degrades to the default behavior rather than swallowing responses, but it is no longer protecting your callers: consider a more capable model for that Agent, or turn the feature off.
Cost
The feature adds roughly one token to each response, plus the instructions block in the prompt (which is part of the cached prompt prefix on models that support prompt caching). A held turn produces a marker-only response, which is far cheaper than a full reply. Weigh that against the calls where the AI Agent no longer interrupts the caller and no longer answers half a sentence.